//************************************************************************
/// <copyrigth>2024-2025 Corporation.All Rights Reserved</copyrigth>
/// <author>tangyingzhong</author>
/// <contact>tangyz114987@outlook.com</contact>
/// <version>v1.0.0</version>
/// <describe>
/// Cross-Platform notifier which do not need to knwo who will handle the notification
///</describe>
/// <date>2024/5/6</date>
///***********************************************************************
#ifndef INOTIFIER_H
#define INOTIFIER_H

#include <functional>
#include "IHandler.h"
#include "ModuleLoader/ModuleConfig.h"

namespace SystemTool
{
    class CLASS_ITEM INotifier
    {
    public:
        // Destruct the obj
        virtual ~INotifier(){    }

        // Add handler
        virtual void Add(IHandler *pHandler) = 0;

        // Remove handler
        virtual void Remove(IHandler *pHandler) = 0;

        // Clear the handler
        virtual void Clear() = 0;

        // Send the notify
        virtual void Send(NArgs &Args) = 0;
    };
}

#endif // INOTIFIER_H
